﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MsForgeReboot.Framework.Entities;

namespace MsForgeReboot.Framework.Interfaces {
    public interface IChannel {

        Event Source { get; set; }

        /// <summary>
        /// Delivers the event specified in the parameter. This overload is used for injecting for testing.
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        DeliveryResult  DeliverEvent(Event source);

        /// <summary>
        /// Delivers an event that is already in the channel definition.
        /// </summary>
        /// <param name="options"></param>
        /// <returns>DeliveryResult specifying if the operation suceeded or not.</returns>
        DeliveryResult DeliverEvent();



    }
}
